package com.powergame.model;

import com.powergame.exceptions.PowerGameException;
import java.util.ArrayList;
import java.util.List;

/**
 * FeuilleOrdres.java
 *
 * Modélise la feuille d'ordres qui remplit le joueur à chaque tour 
 *
 * @author ToF
 */
public class FeuilleOrdres {
    
    /** Le joueur a qui appartient la feuille */
    private Joueur joueur = null;
    
    /** Les ordres à executer */
    private List<Ordre> ordres = null;
    
    public FeuilleOrdres(Joueur joueur){
        this.joueur = joueur;
    }

    public Joueur getJoueur() {
        return joueur;
    }

    public void setJoueur(Joueur joueur) {
        this.joueur = joueur;
    }

    public List<Ordre> getOrdres() {
        if(ordres == null){
            ordres = new ArrayList<Ordre>();
        }
        return ordres;
    }

    public void setOrdres(List<Ordre> ordres) {
        this.ordres = ordres;
    }

    void ajouteOrdre(Ordre ordre) throws PowerGameException {
        
        if(getOrdres().size() >= 5){
            throw new PowerGameException("La feuille d'ordre du joueur est complète");
        }
        
        if(!getOrdres().contains(ordre)){
            getOrdres().add(ordre);
        }
    }

    public void execute() {
        
        for(Ordre o : getOrdres()){
            if(o.getEtat() == Ordre.EN_ATTENTE){
                o.setEtat(Ordre.EXECUTION_EN_COURS);
                try{
                    o.execute();
                    o.setEtat(Ordre.TERMINE_OK);

                }catch(PowerGameException e){
                    o.setEtat(Ordre.TERMINE_ERREUR);
                }
            }
        }
    }
}
